数据增量更新概述

最后更新时间:2019年6月17日

功能介绍

地图数据增量更新提供在线数据增量更新与离线数据增量更新功能。适用于源数据部分变更后,在线地图与离线地图数据的同步更新。

1
离线数据增量更新

实现离线数据增量更新功能,即在桌面端变更源数据后移动端增量更新离线数据包。

2
在线数据增量更新

实现在线数据增量更新,即在线地图数据服务更新后,移动端在线动态同步更新。

功能接口

实现数据增量更新的接口非常简单,对应API程序包为com.zondy.mapgis.core.geodatabase,其核心接口为数据库对象DataBase,通过调用其updateAsync方法实现更新。

接口 说明
DataBase.updateAsync() 离线数据增量更新

离线数据增量更新 Sample详情

离线地图增量更新,指离线地图的源数据发生变更,如在桌面端对源地理数据库的数据进行了编辑,需要将变更的部分数据更新到移动端离线数据库中。移动端离线地图数据库,分为基础库(.mgdb)和更新库(.mudb),离线地图增量更新是将源数据库中变更的图层数据打包,生成离线更新库进行更新的过程。

一、数据准备

1

准备基础库

首先利用MapGIS 10.3 桌面工具中的“地图数据转换工具”将原始地图数据生成移动数据包,作为增量更新的基础库。注意,在转换数据时,在选项设置中,需设置数据库类型为基础库。转换成功之后,可打开文件夹查看转换后的数据,生成的文件后缀为“.mgdb”。

基础库.jpg

2

生成更新库

当源数据发生了变更后,利用MapGIS 10.3 桌面工具中的“地图数据转换工具”,将变更后的地图数据生成移动数据包,作为增量更新的增量库。注意,在转换数据时,在选项设置中,只需勾选变更图层,并设置数据库类型为“更新库”。转换成功之后,可打开文件夹查看转换后的数据。生成的更新库后缀为“.mudb”,将数据拷贝到移动设备中。

生成更新包.png 更新库.png

二、具体更新实现

1

获取基础库、更新库数据

//获取基础库和更新库的存储路径、基础数据的地图文档
String databasePath=Environment.getExternalStorageDirectory().getPath()+"/MapGIS Mobile 2D Sample/Map/MapEdit/武汉MKT.mgdb";                                       //基础库路径
String updateDBPath=Environment.getExternalStorageDirectory().getPath()+"/MapGIS Mobile 2D Sample/Map/IncrementalUpdate/change.mudb";                              //更新库路径

2

打开基础数据库

DataBase dataBase=new DataBase(); //创建数据库
dataBase.open(databasePath);      //打开数据库

3

增量更新

调用Database的updateAsync方法进行增量更新操作,同时具有更新进度、结果的回调函数。

//增量更新
dataBase.updateAsync(updateDBPath, new DataBaseUpdateCallback() {
    @Override
    public void onUpdating(long arg0, long arg1, double arg2) {
        //更新中回调(参数:更新要素类总数、当前要素类的索引、更新百分比)
        Log.e("progress", "更新要素类总数" + arg0 + "\n当前更新" + arg1 + "\n更新了百分之" + arg2);
    }

    @Override
    public void onUpdateFinish(boolean arg0) {
        //完成后回调(参数:表示更新是正常完成还是异常完成)
        if (arg0) {
            Log.e("updateDB", "更新完成");
            //停止数据服务请求
            aMapView.stopCurRequest(new MapViewStopCurRequestCallback() {
                @Override
                public void onDidStopCurRequest() {
                    aMapView.forceRefresh(); //强制刷新地图后即可查看到更新效果
                }
            });
        }
    }
});

展示效果如下所示:

离线数据增量更新.jpg 离线数据增量更新.jpg

在线数据增量更新 Sample详情

移动端显示在线地图,当在线服务原始地图数据发生变化时,只要只要保证移动设备和IGServer服务器处于同一网络中,并且网络顺畅,调用强制刷新接口forceRefresh()可即时在移动设备中查看到更新效果。因为在线地图是实时从服务器中获取数据进行展示的。